#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
#include <sys/wait.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <sys/fcntl.h>

int main(int argc,char* argv[])
{
    umask(0);
    int ret = fork();
    if (ret <0)
    {
        printf("创建线程失败\n");
        exit(-1);
    }

    if (ret >0)
    {
        printf("父进程结束\n");
        exit(0);
    }

    if (ret==0)
    {
        printf("pid:%s\n",getpid());
        setsid();
        signal(SIGCHLD,SIG_IGN);
        signal(SIGHUP,SIG_IGN);
        chdir("/");
        //  /dev/null 黑洞设备 什么东西往这个设备一丢就没了
        int fd = open("/dev/null",O_RDWR);
        dup2(fd,0);
        dup2(fd,1);

    }
    while (1)
    { //模拟守护进程工作
        sleep(1);
    }

    return 0;
}
